# 一个小测试
alien = Actor('alien')
alien.pos = 100, 56

WIDTH = 500
HEIGHT = alien.height + 20

def draw(): # 循环相关函数
    screen.clear()
    alien.draw()

alien.topright = 0, 10

def update(): #循环相关函数
    alien.left += 2
    if alien.left > WIDTH:
        alien.right = 0

def on_mouse_down(pos): #事件函数
    if alien.collidepoint(pos):
        set_alien_hurt()

def set_alien_normal(): #自定义函数
    alien.image = 'alien'

def set_alien_hurt(): #自定义函数
    alien.image = 'alien_hurt'
    sounds.eep.play()
    clock.schedule_unique(set_alien_normal, 0.2)


'''
1. 游戏循环相关函数
    draw() - 每帧调用一次，用于绘制游戏画面
    update() - 每帧调用一次，用于更新游戏状态
    update(dt) - 带时间参数的版本，dt 是上一帧到当前帧的时间差（秒）

2. 鼠标事件函数
    on_mouse_down(pos) - 鼠标按键按下时调用
    on_mouse_down(pos, button) - 带鼠标按键参数的版本
    on_mouse_up(pos) - 鼠标按键释放时调用
    on_mouse_up(pos, button) - 带鼠标按键参数的版本
    on_mouse_move(pos) - 鼠标移动时调用
    on_mouse_move(rel, pos) - 带相对移动参数的版本

3. 键盘事件函数
    on_key_down(key) - 键盘按键按下时调用
    on_key_down(key, mod, unicode) - 完整参数的版本
    on_key_up(key) - 键盘按键释放时调用
    on_key_up(key, mod) - 带修饰键参数的版本

4. 游戏控制器事件函数
    on_joybutton_down(joystick, button) - 游戏手柄按键按下
    on_joybutton_up(joystick, button) - 游戏手柄按键释放
    on_joyhat_motion(joystick, hat_x, hat_y) - 游戏手柄方向键移动
    on_joyaxis_motion(joystick, axis, value) - 游戏手柄摇杆移动

5. 音乐播放完成事件
    on_music_end() - 当背景音乐播放完成时调用

重要说明
    这些函数你只需要定义，不需要手动调用
    函数名必须完全匹配（包括大小写）才能被识别
    你可以选择性地实现你需要的函数
    如果不需要处理某个事件，可以不定义对应的函数
    带参数的版本和不带参数的版本不能同时定义

'''

